#!/usr/bin/env python3
"""
字母雨游戏图标生成器
生成三种尺寸的图标：应用图标、能力图标、启动图标
"""

from PIL import Image, ImageDraw, ImageFont
import os

def create_icon(size, output_path):
    """
    创建游戏图标

    设计理念：
    - 渐变蓝紫色背景（科技感）
    - 下落的字母 A/R/K（代表 ArkTS）
    - 键盘图案装饰
    """
    # 创建画布
    img = Image.new('RGBA', (size, size), (0, 0, 0, 0))
    draw = ImageDraw.Draw(img)

    # 绘制圆角矩形背景（渐变效果用纯色替代）
    # 使用科技蓝色 (#3b82f6)
    background_color = (59, 130, 246, 255)  # 科技蓝

    # 绘制圆角矩形
    radius = size // 6
    draw.rounded_rectangle(
        [(0, 0), (size, size)],
        radius=radius,
        fill=background_color
    )

    # 添加渐变效果（通过半透明覆盖层模拟）
    overlay = Image.new('RGBA', (size, size), (0, 0, 0, 0))
    overlay_draw = ImageDraw.Draw(overlay)

    # 上半部分浅一些
    overlay_draw.rectangle(
        [(0, 0), (size, size // 2)],
        fill=(255, 255, 255, 30)
    )

    # 下半部分深一些
    overlay_draw.rectangle(
        [(0, size // 2), (size, size)],
        fill=(0, 0, 0, 40)
    )

    img = Image.alpha_composite(img, overlay)
    draw = ImageDraw.Draw(img)

    # 绘制下落的字母（A、R、K）
    font_size = size // 3

    try:
        # 尝试使用系统字体
        font = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", font_size)
    except:
        # 如果找不到，使用默认字体
        font = ImageFont.load_default()

    # 字母位置（错落排列，模拟下落）
    letters = [
        ('A', size * 0.2, size * 0.15, (255, 255, 255, 255)),   # 左上
        ('R', size * 0.5, size * 0.35, (255, 255, 255, 200)),   # 中间偏上
        ('K', size * 0.7, size * 0.6, (255, 255, 255, 150)),    # 右下（更透明，表示更远）
    ]

    for letter, x, y, color in letters:
        # 获取文字边界框
        bbox = draw.textbbox((0, 0), letter, font=font)
        text_width = bbox[2] - bbox[0]
        text_height = bbox[3] - bbox[1]

        # 居中偏移
        text_x = x - text_width / 2
        text_y = y - text_height / 2

        # 绘制发光效果（多层阴影）
        for offset in range(3, 0, -1):
            glow_alpha = 50 // offset
            draw.text(
                (text_x, text_y),
                letter,
                font=font,
                fill=(255, 255, 255, glow_alpha)
            )

        # 绘制主文字
        draw.text(
            (text_x, text_y),
            letter,
            font=font,
            fill=color
        )

    # 绘制键盘装饰（底部小图标）
    keyboard_y = size * 0.85
    key_size = size // 12
    key_spacing = key_size + size // 30

    # 绘制3个小按键
    start_x = (size - (key_spacing * 2)) / 2

    for i in range(3):
        key_x = start_x + i * key_spacing
        # 绘制按键
        draw.rounded_rectangle(
            [(key_x, keyboard_y), (key_x + key_size, keyboard_y + key_size)],
            radius=key_size // 4,
            fill=(255, 255, 255, 100),
            outline=(255, 255, 255, 150),
            width=2
        )

    # 保存图标
    os.makedirs(os.path.dirname(output_path), exist_ok=True)
    img.save(output_path, 'PNG')
    print(f"✅ 生成图标: {output_path} ({size}x{size})")

def main():
    """生成所有尺寸的图标"""
    base_path = "/Users/admin/Developer/projects/personal/harmonyos/TypingRain2"

    # 生成不同尺寸的图标
    icons = [
        # (尺寸, 输出路径)
        (512, f"{base_path}/AppScope/resources/base/media/app_icon.png"),      # 应用图标
        (512, f"{base_path}/entry/src/main/resources/base/media/icon.png"),    # 能力图标
        (512, f"{base_path}/entry/src/main/resources/base/media/startIcon.png"), # 启动图标
    ]

    for size, path in icons:
        create_icon(size, path)

    print("\n🎉 所有图标生成完成！")
    print("\n图标位置：")
    print("  1. AppScope/resources/base/media/app_icon.png    - 应用图标")
    print("  2. entry/src/main/resources/base/media/icon.png  - 能力图标")
    print("  3. entry/src/main/resources/base/media/startIcon.png - 启动窗口图标")

if __name__ == '__main__':
    main()
